17.2 初始化
初始化过程非常简单,重点是设置gcpercent和next_gc阈值。
mgc.go
func gcinit() { // 并发执行器 work.markfor=parforalloc(_MaxGcproc)
// 设置GOGC _ =setGCPercent(readgogc())
// 初始启动阈值(4MB) memstats.next_gc=heapminimum }
func readgogc()int32{ p:=gogetenv(“GOGC”) if p "" { return 100 } if p “off” { return-1 } return int32(atoi(p)) }
func setGCPercent(in int32) (out int32) { out=gcpercent if in<0{ in= -1 } gcpercent=in heapminimum=defaultHeapMinimum*uint64(gcpercent) /100 return out }